package main
/*

*/
import (
	"fmt"
	"database/sql"
	_ "github.com/go-sql-driver/mysql" 
	// 包的初始化，执行包中所有的init()方法 具体参见http://blog.csdn.net/wanglei9876/article/details/50475864
	// 使用第三方包之前必须导包 go get github.com/go-sql-driver/mysql
)

type Stu struct {
	Id string
	Name string
	Birth string
	Sal float64
	Degree string
}

// 1) 测试查询
func testSelect(db *sql.DB) {
	//查询数据，指定字段名，返回sql.Rows结果集
	rows, err := db.Query("select eid,ename,birth,sal,degree from emp");
	if err != nil {
		fmt.Println("查询数据库出错！");
		fmt.Println(err);
		return;
	}
	// 1） 绑定值给普通变量
    // id := 0;
	// name := "";
	// 2）绑定值给结构体
    for rows.Next() {
        // rows.Scan(&id, &name);
		// fmt.Println(id, name);
		stu := &Stu{}
		rows.Scan(&stu.Id, &stu.Name, &stu.Birth, &stu.Sal, &stu.Degree);
		fmt.Println(*stu);
    }
}

func main() {
	//打开数据库
    //DSN数据源字符串：用户名:密码@协议(地址:端口)/数据库?参数=参数值
    db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306)/bart?charset=utf8");
    if err != nil {
		fmt.Println("获得数据库连接失败！");
		fmt.Println(err);
		return;
    }
 
    //关闭数据库，db会被多个goroutine共享，可以不调用
	defer db.Close();
	
	testSelect(db)
} 

